/*
 * Copyright (C) 2012 nutmotion <simonotmanuel@gmail.com>
 * Originally released under the tradeUplan project (wiki is at Expression project.wiki is undefined on line 5, column 85 in Templates/Licenses/license-gpl30.txt.)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.nutmotion.webservice;

import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

/**
 * REST Web Service
 *
 * @author nutmotion <simonotmanuel@gmail.com>
 */
@Path("/autocomplete")
public class AutocompleteResource {

    @Context
    private UriInfo context;

    /** Creates a new instance of AutocompleteResource */
    public AutocompleteResource() {
    }

    /**
     * Retrieves representation of an instance of com.nutmotion.webservice.AutocompleteResource
     * @return an instance of java.lang.String
     */
    @GET
    @Path("/tags/{tagPart}")
    @Produces(MediaType.APPLICATION_JSON)        
    public JSONWrapper[] read(@PathParam("tagPart") String tagPart) {
        List<JSONWrapper> tagsMatching=new ArrayList<JSONWrapper>();
//        JSONArray jsonArray=new JSONArray();
        JSONWrapper item=new JSONWrapper(1, "thisistoto");
//        jsonArray.put(item);
        tagsMatching.add(item);
        item=new JSONWrapper(2, "thisistata");
//        jsonArray.put(item);
        tagsMatching.add(item);               
        return (JSONWrapper[]) tagsMatching.toArray(new JSONWrapper[tagsMatching.size()]);
    }
    
//    
//      @GET
//    @Path("/tags/{tagPart}")
//    @Produces(MediaType.APPLICATION_JSON)        
//    public List<JSONWrapper> read(@PathParam("tagPart") String tagPart) {
//        List<JSONWrapper> tagsMatching=new ArrayList<JSONWrapper>();
////        JSONArray jsonArray=new JSONArray();
//        JSONWrapper item=new JSONWrapper(1, "thisistoto");
////        jsonArray.put(item);
//        tagsMatching.add(item);
//        item=new JSONWrapper(2, "thisistata");
////        jsonArray.put(item);
//        tagsMatching.add(item);               
//        return tagsMatching;
//    }
      
//            public Tag read(@PathParam("tagPart") String tagPart) {
//        Tag theTag=new Tag();
//        theTag.setId(2);
//        theTag.setTag("totooooooooooooo");
//        return theTag;
//    }
    
    class AutocompleteItemWrapper {
        private int value;
        private String label;

        public AutocompleteItemWrapper(int value, String label) {
            setValue(value);
            setLabel(label);
        }
        
        public String toString() {
            return "{value="+value+",label="+label+"}";
        }
        
        /**
         * @return the value
         */
        public int getValue() {
            return value;
        }

        /**
         * @param value the value to set
         */
        public void setValue(int value) {
            this.value = value;
        }

        /**
         * @return the label
         */
        public String getLabel() {
            return label;
        }

        /**
         * @param label the label to set
         */
        public void setLabel(String label) {
            this.label = label;
        }
        
    }
    /**
     * PUT method for updating or creating an instance of AutocompleteResource
     * @param content representation for the resource
     * @return an HTTP response with content of the updated or created resource.
     */
    @PUT
    @Consumes("application/json")
    public void putJson(String content) {
    }
}
